package main

import "fmt"

/**
接口
	接口只是一种规范，规范我们代码中要做什么事，具体是怎么做的我们不用管
*/
func main() {
	//传统方式调用方法
	var stu Student
	stu.sout() //hello

	/**
	这种方式调用，子类必须都实现父类接口中声明的方法
	父类接口中如果存在两个方法
	那么子类就需要要有两个对应的方法
	*/
	//接口变量调用方法
	var per Personer
	per = &stu //将对象地址符号取出来，然后赋值给接口变量，接口变量调用方法
	per.sout() //hello
}

/**
定义一个接口
*/
type Personer interface {
	//声明一个方法
	sout()
}

type Student struct {
}

//Student中定义这样一个方法，也叫做sout
func (s *Student) sout() {
	fmt.Println("hello")
}
